package cliente.gerenciadorcliente.so;

import java.rmi.RemoteException;
import java.util.List;

import comum.rn.RNDescricaoSalaJogo;
import comum.rn.RNEstatisticas;
import comum.so.SOClienteEntrada;
import comum.so.exception.SalaCheiaException;
import comum.so.exception.SalaComNomeJaExistenteException;
import comum.so.exception.SalaNaoExisteException;
import comum.so.exception.SenhaIncorretaException;

public class SOGerenciadorClienteSaidaImpl implements SOGerenciadorClienteSaida {

	private Long id;

	private SOClienteEntrada clienteEntrada;

	public SOGerenciadorClienteSaidaImpl(SOClienteEntrada clienteEntrada) {
		this.setClienteEntrada(clienteEntrada);
	}

	@Override
	public void deslogar() {
		try {
			getClienteEntrada().deslogar();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

	@Override
	public List<RNDescricaoSalaJogo> buscarSalasJogo(boolean mostrarCheios,
			boolean mostrarComSenha) throws RemoteException {
		return getClienteEntrada().buscarSalasJogo(mostrarCheios, mostrarComSenha);
	}

	@Override
	public void entrarSalaJogo(Long idSalaJogo, String senha)
			throws RemoteException, SalaCheiaException, SalaNaoExisteException,
			SenhaIncorretaException {
		getClienteEntrada().entrarSalaJogo(idSalaJogo, senha);
	}

	@Override
	public void criarSalaJogo(String nome, String senha)
			throws RemoteException, SalaComNomeJaExistenteException {
		getClienteEntrada().criarSalaJogo(nome, senha);
	}

	@Override
	public RNEstatisticas obterEstatisticas() throws RemoteException {
		return getClienteEntrada().obterEstatisticas();
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public SOClienteEntrada getClienteEntrada() {
		return clienteEntrada;
	}

	public void setClienteEntrada(SOClienteEntrada clienteEntrada) {
		this.clienteEntrada = clienteEntrada;
	}

}
